/*
 * Object.hpp
 *
 *  Created on: Sep 5, 2013
 *      Author: jason
 */

#ifndef OBJECT_HPP_
#define OBJECT_HPP_

#include <SFML/Graphics.hpp>

namespace OForce_Object {
enum OBJECT_TYPE {CHARACTER_TYPE, TREASURE_TYPE, ENEMY_TYPE, INVALID_TYPE};

class Object {
public:
	Object(int ID);
	Object() {mId = -1;}
	sf::RectangleShape rect;
	sf::Sprite sprite;
	sf::Texture getTexture() {return texture; }
	bool getCollision() {return mCollide;}
	void setCollision(bool collide) {mCollide = collide;}
	bool getVisible() {return mVisible;}
	void setVisible(bool vis) {mVisible = vis;}
	sf::Vector2i getPosition() {return position;}
	void setPosition(int x, int y);
	virtual void draw() = 0;
	virtual void update() = 0;
	int getID() {return mId;}
	void setCurrentLayer(int i) {currentLayer = i;}
	int getCurrentLayer() const {return currentLayer;}
	OBJECT_TYPE getObjectType() {return objectType;}
protected:
	bool mCollide;
	bool mVisible;
	int mId;
	int currentLayer;
	sf::Vector2i mSize;
	sf::Texture texture;
	sf::Vector2i position;
	OBJECT_TYPE objectType;
};

} // namespace OForce_Object

#endif /* OBJECT_HPP_ */
